home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 November / PCWorld_2007-11_cd.bin / komunikace / plainhtml / ph45_ENU_Setup.exe / {app} / res / projectActions.js < prev    next >
Text File  |  2006-09-07  |  5KB  |  237 lines

  1. /*
  2.     BDS Welcome Page - Project Actions Module
  3.  
  4.     Copyright (c) 2004, 2005 Borland Software Corporation
  5.  
  6.     Written by Daniel Wischnewski, Borland SE Germany.
  7.     Co-Admin of www.delphipraxis.net -- The German Delphi Community
  8.     Email: dwischnewski@gatenetwork.com
  9. */
  10.  
  11. function openProject()
  12. {
  13.     external.Application.MainForm.FileOpenProjectItem.Click;
  14. }
  15.  
  16. function newProject()
  17. {
  18.     external.Application.MainForm.FileNewItem.Click;
  19. }
  20.  
  21. function openFile()
  22. {
  23.     external.Application.MainForm.FileOpenItem.Click;
  24. }
  25.  
  26. function newFile()
  27. {
  28.     external.Application.MainForm.SearchFileFindItem.Click;
  29. }
  30.  
  31. function viewPrjMgrItem()
  32. {
  33.     external.Application.MainForm.ViewPrjMgrItem.Click;
  34. }
  35.  
  36. function openHelp()
  37. {
  38.     external.Application.MainForm.HelpInprisePage.Click;
  39. }
  40.  
  41. function openHelpCSTutorial()
  42. {
  43.     external.Application.MainForm.HelpCsTutorialItem.Click;
  44. }
  45.  
  46. function openFileLink(fileName)
  47. {
  48.     try
  49.     {
  50.         external.Application.OpenFile(fileName);
  51.     } catch(e) {
  52.         debugAlert(e.message);
  53.     }
  54. }
  55.  
  56. function openDExplore(aLink)
  57. {
  58.     var session;
  59.     session = new ActiveXObject("DExplore.AppObj");
  60.     session.SetCollection("ms-help://borland.bds4", "");
  61.     session.Contents();
  62.     session.DisplayTopicFromUrl(aLink);
  63. }
  64.  
  65. //file manipulation functions
  66. function ExtractPathedFileFromCaption(FileString)
  67. {
  68.     return FileString.substring(FileString.indexOf(' ') + 1, FileString.length);
  69. }
  70.  
  71. function ExtractValuesFromKeyString(KeyString)
  72. {
  73.     var KeyStringArray = new Array();
  74.     KeyStringArray = KeyString.split(',');
  75.     return KeyStringArray;
  76. }
  77.  
  78. function clickMenu(Index)
  79. {
  80.     var MenuItem = external.Application.MainForm.FileClosedFilesItem.GetItems(Index);
  81.     if (MenuItem != null)
  82.     {
  83.         MenuItem.Click;
  84.     }
  85.     try
  86.     {
  87.         window.setTimeout("renderProjectsModule();", 1000);
  88.     }
  89.     catch(e)
  90.     {
  91.         debugAlert(e.message);
  92.     }
  93. }
  94.  
  95. function getMenuText(Caption, Index)
  96. {
  97.     var Text = "";
  98.     var Filename = "";
  99.  
  100.     if (Caption != "-")
  101.     {
  102.         var pick = Caption.substring(1, 2);
  103.         if (pick < "5")
  104.         {
  105.             Text = Caption.substr(3);
  106.         }
  107.     }
  108.     Filename = Text;
  109.     var i = Text.lastIndexOf("\\");
  110.     if (Text.length > 0 && i > 0)
  111.     {
  112.         Text = Text.substr(i + 1);
  113.     }
  114.     return Text;
  115. }
  116.  
  117. function getFileModifiedString(PathedFile)
  118. {
  119.     if(fileSystemObject != null)
  120.     {
  121.         if(fileSystemObject.FileExists(PathedFile))
  122.         {
  123.             var fModified = false;
  124.             var objDateFile = new Date(fileSystemObject.GetFile(PathedFile).DateLastModified);
  125.             return objDateFile.toLocaleDateString();
  126.         } else {
  127.             return "File not found";
  128.         }
  129.     } else {
  130.         return "Unable to read file date";
  131.     }
  132. }
  133.  
  134. function GetFileExtension(filename)
  135. {
  136.     return filename.substring(filename.lastIndexOf("."));
  137. }
  138.  
  139. var pt_Group = 1;
  140. var pt_D32 = 2;
  141. var pt_DNet = 3;
  142. var pt_CS = 4;
  143. var pt_VB = 5;
  144. var pt_CPP = 6;
  145. var pt_Design = 7;
  146. var pt_Other = 100;
  147.  
  148. function projectType(filename)
  149. {
  150.     var fileExt = GetFileExtension(filename);
  151.  
  152.     var pattern = /\.bdsgroup/;
  153.     if (pattern.test(fileExt))
  154.     {
  155.         return pt_Group;
  156.     }
  157.  
  158.     var pattern = /\.bdsproj/;
  159.     if (pattern.test(fileExt))
  160.     {
  161.         var xmlDoc = loadXmlDocSafe(filename)
  162.         var Node = xmlDoc.documentElement.selectSingleNode("//Option[@Name=\"Personality\"]");
  163.         if (Node != null) {
  164.             switch (Node.text)
  165.             {
  166.                 case "Delphi.Personality":
  167.                     return pt_D32;
  168.                     break;
  169.                 case "CPlusPlusBuilder.Personality":
  170.                     return pt_CPP;
  171.                     break;
  172.                 case "DelphiDotNet.Personality":
  173.                     return pt_DNet;
  174.                     break;
  175.                 case "CSharp.Personality":
  176.                     return pt_CS;
  177.                     break;
  178.                 case "VB.Personality":
  179.                     return pt_VB;
  180.                     break;
  181.                 case "Design.Personality":
  182.                     return pt_Design;
  183.                     break;
  184.             }
  185.         }
  186.     }
  187.     return pt_Other
  188. }
  189.  
  190. function renderProjectsModule()
  191. {
  192.     var xmlProjects;
  193.     var xmlChannel;
  194.     var xmlDoc;
  195.     var rowCount;
  196.     var reOpenMenu;
  197.     var pType;
  198.     var projects;
  199.  
  200.     reOpenMenu = external.Application.MainForm.FileClosedFilesItem;
  201.     xmlProjects = getXmlDoc();
  202.     xmlProjects.loadXML('<rss version="2.0" />');
  203.     xmlChannel = getSubNode(xmlProjects.documentElement, 'channel');
  204.     reOpenMenu = external.Application.MainForm.FileClosedFilesItem;
  205.  
  206.     rowCount = reOpenMenu.Count();
  207.     for(var i = 0; i < rowCount ; i++)
  208.     {
  209.         var menuItem = reOpenMenu.GetItems(i);
  210.         var menuText = getMenuText(menuItem.Caption, menuItem.MenuItemIndex);
  211.         var fileName = ExtractPathedFileFromCaption(menuItem.Caption);
  212.         if (menuText != '' && fileSystemObject != null && fileSystemObject.FileExists(fileName))
  213.         {
  214.             var itemNode = xmlChannel.appendChild(xmlProjects.createElement('item'));
  215.             pType = projectType(fileName);
  216.             getSubNode(itemNode, 'personality').text = pType;
  217.             getSubNode(itemNode, 'personalityName').text = pType;
  218.             if (pType == 1)
  219.             {
  220.                 xmlDoc = loadXmlDoc(fileName);
  221.                 if (xmlDoc.parseError.errorCode == 0)
  222.                 {
  223.                     projects = xmlDoc.documentElement.selectNodes('Default.Personality/Projects/Projects[@Name != "Targets"]');
  224.                     for (var j = 0; j < projects.length; j++)
  225.                     {
  226.                         itemNode.appendChild(projects[j]);
  227.                     }
  228.                 }
  229.             }
  230.             getSubNode(itemNode, 'title').text = menuText;
  231.             getSubNode(itemNode, 'file').text = fileName;
  232.             getSubNode(itemNode, 'index').text = i;
  233.             getSubNode(itemNode, 'lastChange').text = getFileModifiedString(fileName);
  234.         }
  235.     }
  236.     displayRss(tableContainer, xmlProjects, loadLocalXslDoc('projects.xsl'));
  237. }